<template>
  <div class="school">
    <h2>学校名称 {{ name }}</h2>
    <h2>学校地址 {{ address }}</h2>
  </div>
</template>

<script>
// 引入pubsub pubsub是一个对象,有subscribe,publish,unsubscribe三个方法
import pubsub from "pubsub-js";
export default {
  name: "School",
  data() {
    return {
      name: "尚硅谷",
      address: "北京",
    };
  },
  methods: {
    demo(msgName, data) {
      console.log(`有人发布了:${msgName},传递信息为:${data}`);
      console.log(this);
    },
  },
  // 组件挂载完毕调用
  mounted() {
    // 订阅消息 订阅hello当有人发布了hello消息,就执行回调
    // 注意：(回调函数必须为箭头函数)或调用methods中的方法
    /* this.pubid = pubsub.subscribe("hello", (msgName, data) => {
      console.log(`有人发布了:${msgName},传递信息为:${data}`);
      console.log(this); // vm
    }); */
    // 用this.pubid保存订阅的id,便于取消订阅
    this.pubid = pubsub.subscribe("hello",this.demo);
  },
  // 组件将要被销毁时执行
  beforeDestroy() {
    // 取消订阅
    pubsub.unsubscribe(this.pubid);
  },
};
</script>

<style>
.school {
  background-color: skyblue;
  padding: 5px;
}
</style>
